package com.lzy.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import java.util.Date;
import java.util.List;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.lzy.common.base.BaseEntity;
import com.lzy.validate.xss.Xss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
 * 用户信息表
 * 
 * @author lyw
 * @email lyw@gmail.com
 * @date 2023-02-02 17:06:20
 */
@Data
@ApiModel("SysUserEntity - 系统用户")
@TableName("sys_user")
public class SysUserEntity extends BaseEntity {
	private static final long serialVersionUID = 1L;

	/**
	 * 用户ID
	 */
	@TableId
	@ApiModelProperty("用户ID")
	private Long userId;
	/**
	 * 部门ID
	 */
	@ApiModelProperty("部门ID")
	private Long deptId;

	@TableField(exist = false)
	@ApiModelProperty("部门名称")
	private SysDeptEntity deptEntity;
	/**
	 * 岗位组
	 */
	@ApiModelProperty("岗位组")
	@TableField(exist = false)
	private List<SysPostEntity> posts;
	/**
	 * 角色组
	 */
	@ApiModelProperty("角色组")
	@TableField(exist = false)
	private Set<SysRoleEntity> roles;
	/**
	 * 用户账号
	 */
	@Xss(message = "用户昵称不能包含脚本字符")
	@NotBlank(message = "用户账号不能为空")
	@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
	@ApiModelProperty("用户账号")
	private String userName;
	/**
	 * 用户昵称
	 */
	@Xss(message = "用户昵称不能包含脚本字符")
	@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
	@ApiModelProperty("用户昵称")
	private String nickName;
	/**
	 * 用户类型（00系统用户）
	 */
	@ApiModelProperty("用户类型（00系统用户）")
	private String userType;
	/**
	 * 用户邮箱
	 */
	@Email(message = "邮箱格式不正确")
	@Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.com)$", message = "邮箱格式不正确")
	@ApiModelProperty("用户邮箱")
	private String email;
	/**
	 * 手机号码
	 */
	@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
	@ApiModelProperty("手机号码")
	private String phonenumber;
	/**
	 * 用户性别（0男 1女 2未知）
	 */
	@ApiModelProperty("用户性别（0男 1女 2未知）")
	private String sex;
	/**
	 * 头像地址
	 */
	@ApiModelProperty("头像地址")
	private String avatar;
	/**
	 * 密码
	 */
	@ApiModelProperty("密码")
	@JsonIgnore
	private String password;
	/**
	 * 帐号状态（0正常 1停用）
	 */
	@ApiModelProperty("帐号状态（0正常 1停用）")
	private String status;
	/**
	 * 删除标志（0代表存在 2代表删除）
	 */
	@ApiModelProperty("删除标志（0代表存在 2代表删除）")
	@TableLogic
	private Integer delFlag;
	/**
	 * 最后登录IP
	 */
	@ApiModelProperty("最后登录IP")
	private String loginIp;
	/**
	 * 最后登录时间
	 */
	@ApiModelProperty("最后登录时间")
	private Date loginDate;

}
